package com.skivingcloud.report.service.impl;

import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.skivingcloud.report.entity.ReportTpl;
import com.skivingcloud.report.mapper.ReportTplMapper;
import com.skivingcloud.report.service.ReportTplService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.skivingcloud.common.utils.PageParameter;

/**
 * excel报表模板表 服务层实现。
 *
 * @author skivingcloud
 * @since 2024-11-07
 */
@Service
public class ReportTplServiceImpl extends ServiceImpl<ReportTplMapper, ReportTpl> implements ReportTplService {

    /**
     * 分页查询excel报表模板表
     *
     * @param parameter 查询参数
     * @return 分页查询结果
     */
    @Override
    public Page<ReportTpl> queryByPage(PageParameter<ReportTpl> parameter){
        Page<ReportTpl> page = new Page<>(parameter.getPage(), parameter.getPageSize());
        QueryWrapper queryWrapper = QueryWrapper.create();
        if (parameter.getParam() != null) {
            //查询条件
            if (StringUtils.isNoneBlank(parameter.getParam().getId())) {
                queryWrapper.and(ReportTpl::getId).like(parameter.getParam().getId());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getTenantId())) {
                queryWrapper.and(ReportTpl::getTenantId).like(parameter.getParam().getTenantId());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getTplCode())) {
                queryWrapper.and(ReportTpl::getTplCode).like(parameter.getParam().getTplCode());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getTplName())) {
                queryWrapper.and(ReportTpl::getTplName).like(parameter.getParam().getTplName());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getTplType())) {
                queryWrapper.and(ReportTpl::getTplType).like(parameter.getParam().getTplType());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getReportType())) {
                queryWrapper.and(ReportTpl::getReportType).like(parameter.getParam().getReportType());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getIsIndex())) {
                queryWrapper.and(ReportTpl::getIsIndex).like(parameter.getParam().getIsIndex());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getIsParamMerge())) {
                queryWrapper.and(ReportTpl::getIsParamMerge).like(parameter.getParam().getIsParamMerge());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getConfig())) {
                queryWrapper.and(ReportTpl::getConfig).like(parameter.getParam().getConfig());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getFrozen())) {
                queryWrapper.and(ReportTpl::getFrozen).like(parameter.getParam().getFrozen());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getImages())) {
                queryWrapper.and(ReportTpl::getImages).like(parameter.getParam().getImages());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getViewAuth())) {
                queryWrapper.and(ReportTpl::getViewAuth).like(parameter.getParam().getViewAuth());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getDesignPwd())) {
                queryWrapper.and(ReportTpl::getDesignPwd).like(parameter.getParam().getDesignPwd());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getExportEncrypt())) {
                queryWrapper.and(ReportTpl::getExportEncrypt).like(parameter.getParam().getExportEncrypt());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getSheetIndex())) {
                queryWrapper.and(ReportTpl::getSheetIndex).like(parameter.getParam().getSheetIndex());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getCalcChain())) {
                queryWrapper.and(ReportTpl::getCalcChain).like(parameter.getParam().getCalcChain());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getConcurrencyFlag())) {
                queryWrapper.and(ReportTpl::getConcurrencyFlag).like(parameter.getParam().getConcurrencyFlag());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getShowToolbar())) {
                queryWrapper.and(ReportTpl::getShowToolbar).like(parameter.getParam().getShowToolbar());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getShowRowHeader())) {
                queryWrapper.and(ReportTpl::getShowRowHeader).like(parameter.getParam().getShowRowHeader());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getShowColHeader())) {
                queryWrapper.and(ReportTpl::getShowColHeader).like(parameter.getParam().getShowColHeader());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getShowGridlines())) {
                queryWrapper.and(ReportTpl::getShowGridlines).like(parameter.getParam().getShowGridlines());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getRefreshPage())) {
                queryWrapper.and(ReportTpl::getRefreshPage).like(parameter.getParam().getRefreshPage());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getCreator())) {
                queryWrapper.and(ReportTpl::getCreator).like(parameter.getParam().getCreator());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getUpdater())) {
                queryWrapper.and(ReportTpl::getUpdater).like(parameter.getParam().getUpdater());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getDelFlag())) {
                queryWrapper.and(ReportTpl::getDelFlag).like(parameter.getParam().getDelFlag());
            }
            if (StringUtils.isNoneBlank(parameter.getParam().getCoeditFlag())) {
                queryWrapper.and(ReportTpl::getCoeditFlag).like(parameter.getParam().getCoeditFlag());
            }
        }
        return this.page(page, queryWrapper);
    }
}
